package com.ck.company.service;

import com.ck.exception.ServiceException;
import com.ck.model.common.ProgramTemplate;
import com.ck.model.common.sys.LoginUser;
import com.ck.model.company.vo.CpProgramTemplateVO;
import com.github.pagehelper.Page;

/**
 * 节目模板
 *
 * @author linqiang
 * @date 2018-09-11 11:28
 */
public interface CpProgramTemplateService {

    /**
     * 列表查询
     *
     * @param companyCode  商家编码
     * @param templateName 模板名称
     * @param type         模板类型
     * @param pageNum      当前页
     * @param pageSize     每页条数
     * @return Page
     */
    Page<CpProgramTemplateVO> listByPage(String companyCode, String templateName, Integer type, Integer pageNum, Integer pageSize);

    /**
     * 删除
     *
     * @param programTemplateId 主键
     * @param loginUser         登录用户信息
     * @return 影响行数
     */
    int deleteByPrimaryKey(Long programTemplateId, LoginUser loginUser);

    /**
     * 新增
     *
     * @param programTemplate 模板
     * @param loginUser       登录用户
     * @return 影响行数
     */
    Long insert(ProgramTemplate programTemplate, LoginUser loginUser);

    /**
     * 根据主键查询
     *
     * @param programTemplateId 主键
     * @return ProgramTemplate
     */
    ProgramTemplate selectByPrimaryKey(Long programTemplateId);

    /**
     * 修改所有字段
     *
     * @param record 待修改的数据
     * @return 影响行数
     */
    int updateByPrimaryKey(ProgramTemplate record);

    /**
     * 根据名称查询
     *
     * @param name 模板名称
     * @return ProgramTemplate
     */
    ProgramTemplate selectByName(String name);

    /**
     * 修改有值的字段
     *
     * @param programTemplate 模板
     * @param loginUser       登录用户信息
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(ProgramTemplate programTemplate, LoginUser loginUser);

    /**
     * 新增模板
     *
     * @param name         模板名称
     * @param json         模板内容
     * @param screenWidth  模板宽
     * @param screenHeight 模板高
     * @param backupImgUrl 背景图
     * @param loginUser    登录用户信息
     * @return 新增的模板ID
     */
    Long save(String name, String json, Integer screenWidth, Integer screenHeight, String backupImgUrl, LoginUser loginUser);

    /**
     * 修改模板
     *
     * @param templateId 模板ID
     * @param json       内容
     * @param imgUrl     背景图片
     * @param name       模板名称
     * @param loginUser  登录用户信息
     */
    int update(Long templateId, String json, String imgUrl, String name, LoginUser loginUser) throws ServiceException;
}
